This invention relates to the field of computer systems. More particularly, a system and methods are provided for caching and serving a single set of data for serving in response to dissimilar data requests.
In a computing environment in which a data server (e.g., an application server, web server, database server) stores data for access by users operating various client devices (e.g., computers, web-enabled telephones), a cache system is often employed to provide faster access to desired data. In particular, the cache system may receive users' data requests and serve the requested data if stored in the cache system. If the requested data is not cached in the cache system, the request is passed to the data server. In this type of environment, popular data items may be cached and served to users much faster than if each separate request for an item had to be passed to and handled by the data server.
In one type of existing cache system, when a data request is received it is compared against presently cached data and/or previous requests for which data was retrieved and cached. If an exact match is found, the matching cached data is served. Otherwise, the request is referred to and satisfied by the data server. Thus, in this type of system, as long as an identical request format is used, or as long as the data is described identically each time a particular set of data is desired, that data can be easily recognized as being responsive to the requests. Conversely, if requests from different users differ in content or in how they describe the desired data, the cache system cannot match a new request against the data cached in response to previous user's request for the same data, and will have to pass the request to the data server.
It is very common, in today's computing environments, for requests from different users for a single set of data to have different parameters or data descriptions. There may be a large number of different request formats (e.g., for different types of clients or user agents), or each request may be unique because of a unique parameter value or a unique way of describing the data. As a result, a typical cache system may add little value to a particular environment because it may have to pass each request for the data to the data server and end up serving it only for that request.
More specifically, a user's desired data may be identified in a data request (e.g., an http request) by a data identifier such as a URI (Uniform Resource Identifier) or URL (Uniform Resource Locator) that identifies a network address of the data or that is translatable into a network address. URIs in data requests are often supplemented, however, with session identifiers that can be used by an application, web server or data server to differentiate user sessions.
For example, a web server may assign a unique session identifier to a user when he or she first directs his/her browser to a particular web site. That session identifier may then be appended to a URI (e.g., a hyperlink) in a page of content served to the user so that if the user selects the URI, the session identifier is returned to the web server. The server is thus able to track a user as he or she browses. However, because of the unique session identifier that is appended to links or other portions of the content served to a user, that user's request will differ from other users' and the cache system provides no benefit by caching that content because it will not match any other users' request and thus will not be served to any other users.
Other means are sometimes used to identify users, clients or sessions—such as cookies. A cookie is generally assigned by a data server and passed to a user's browser. The browser is instructed to return the cookie to the data server each time the user connects to or browses data from the server. The cookie may be submitted as a parameter or tag within the request and, because different users will have different cookies, their requests will therefore differ and content cached and served for one user cannot be served to a different user.
In short, because of the manner in which data servers may identify or track users or user sessions in some computing environments, the benefits of a present cache system may be diminished or eliminated. Even though the same set of data may be requested by multiple users, the requests may differ in form or content and therefore a present cache system cannot serve the same cached copy of the data for each of the requests. Therefore, a system and a method are needed for facilitating the caching of data for service to multiple users in response to requests that differ, but which are for the same set of data.
Typical cache systems generally also cannot tailor or customize a set of data for different requests. If a particular request or requestor is to receive customized data (e.g., a shopping cart, a personalized web page, a special price for a product), the data server handles the request by assembling the appropriate data.
For example, a web server may be configured to customize or personalize a web page for different users (e.g., with a name, greeting, logo, icon), where much (or most) of the web page remains the same for each user, but a portion of the page differs. In this situation, the typical cache system must pass a user's request for the web page to the data server for personalized service. And, a version created (and cached) for one user cannot be used for another.
Thus, what is also needed is a cache system and a method for altering or customizing a cached set of data for service to multiple users.